package com.ruoyi.project.manage.project.service;

import java.util.List;
import com.ruoyi.project.manage.project.domain.Project;

/**
 * 项目信息Service接口
 * 
 * @author fangkun
 * @date 2022-03-28
 */
public interface IProjectService 
{
    /**
     * 查询项目信息
     * 
     * @param projectId 项目信息主键
     * @return 项目信息
     */
    Project selectProjectByProjectId(Long projectId);

    /**
     * 查询项目信息列表
     * 
     * @param project 项目信息
     * @return 项目信息集合
     */
    List<Project> selectProjectList(Project project);

    List<Project> selectDelProjectList(Project project);

    /**
     * 查询指定项目ID的数据
     *
     * @param ids 项目ID字符串
     * @return 项目信息集合
     */
    List<Project> selectProjectListByIds(String ids);

    /**
     * 新增项目信息
     * 
     * @param project 项目信息
     * @return 结果
     */
    int insertProject(Project project);

    /**
     * 修改项目信息
     * 
     * @param project 项目信息
     * @return 结果
     */
    int updateProject(Project project);

    /**
     * 修改项目基本信息，不变更项目状态
     *
     * @param project 项目信息
     * @return 结果
     */
    int editBasic(Project project);

    int editOther(Project project);

    /**
     * 上报项目
     * @param projectId 项目ID
     * @return 结果
     */
    int submitProject(int projectId);

    /**
     * 撤回项目
     * @param projectId 项目ID
     * @return 结果
     */
    int withdraw(int projectId);

    /**
     * 拒绝提交项目
     *
     * @param project 项目信息
     * @return 项目信息
     */
    int reject(Project project);

    /**
     * 项目入库
     * @param projectId 项目ID
     * @return 结果
     */
    int agree(int projectId);

    /**
     * 批量删除项目信息
     * 
     * @param projectIds 需要删除的项目信息主键集合
     * @return 结果
     */
    int deleteProjectByProjectIds(String projectIds);

    /**
     * 批量复原项目信息
     *
     * @param projectIds 需要复原的数据主键集合
     * @return 结果
     */
    int restoreProjectByProjectIds(String projectIds);

    /**
     * 删除项目信息信息
     * 
     * @param projectId 项目信息主键
     * @return 结果
     */
    int deleteProjectByProjectId(Long projectId);
}
